CREATE PROCEDURE CarregaDimPessoa(@DataCarga DATE)
AS
	DECLARE @CodPessoa INT, @nome VARCHAR(200), @dataNascimento DATETIME, @isPM INT;
	DECLARE @BUSCAITENS INT
	
	--VERIFICA SE EXISTEM PESSOAS CARREGADAS NO DIA DA CARGA
	SET @BUSCAITENS = (SELECT COUNT(*) FROM ST_SiGAT.dbo.Pessoa WHERE dataCarga = @DataCarga)
	IF (@BUSCAITENS <>0)
	BEGIN
		DECLARE C_PESSOA CURSOR FOR
		SELECT [CodPessoa],[nome],[dataNascimento],[isPM]
		FROM [ST_SiGAT].[dbo].[Pessoa]
		WHERE dataCarga = @DataCarga
		
		OPEN C_PESSOA
			FETCH C_PESSOA INTO @CodPessoa, @nome, @dataNascimento, @isPM
			WHILE (@@FETCH_STATUS = 0)
			BEGIN
				IF (EXISTS(SELECT * FROM DW_SiGAT.dbo.DimPessoa WHERE codPessoa = @CodPessoa))
				BEGIN
					UPDATE [DW_SiGAT].[dbo].[DimPessoa]
					   SET [nome] = @nome
						  ,[dataNascimento] = @dataNascimento
						  ,[isPM] = @isPM
					 WHERE codPessoa = @CodPessoa
				END
				ELSE
				BEGIN
					INSERT INTO DW_SiGAT.dbo.DimPessoa (codPessoa, nome,dataNascimento, isPM)
					VALUES
						(@codPessoa, @nome, @dataNascimento, @isPM);			
				END
				FETCH C_PESSOA INTO @CodPessoa, @nome, @dataNascimento, @isPM
			END
		
		CLOSE C_PESSOA
		DEALLOCATE C_PESSOA;
	END;
go
--FIM CARGA PESSOA


--teste carga pessoa
EXEC CarregaDimPessoa '20120715';
SELECT * FROM DIMPESSOA;


